Automatic suggestions based on group relevance

ABSTRACT

Techniques are presented herein for improved automatic suggestions based on group relevance. The techniques include determining groups of account based on the interactions of those accounts with content items, e.g., on a federated system, and ranking tokens extracted from those content items based at least in part on one or more factors. When a partial input is received from a particular account, tokens are ranked based on groups associated with the account and are presented in the user interface.

BENEFIT CLAIM

This application claims the benefit under 35 U.S.C. § 120 as aContinuation of application Ser. No. 16/105,817, filed Aug. 20, 2018,which claims the benefit under 35 U.S.C. § 119(e) of provisionalapplication 62/650,686, filed Mar. 30, 2018, the entire contents of bothof which are hereby incorporated by reference for all purposes as iffully set forth herein. The applicant(s) hereby rescind any disclaimerof claim scope in the parent application(s) or the prosecution historythereof and advise the USPTO that the claims in this application may bebroader than any claim in the parent application(s).

FIELD OF THE INVENTION

The techniques described herein relate to automatically suggesting textas a user types, and in particular to improved automatic suggestionsbased on group relevance.

BACKGROUND

Automatic suggestion of words as a user types is a useful feature ofsome computer systems. Previously, users were required to type in everletter of every phrase needed to search, type in a document, fill out ameeting request, etc. Now, some search engines, for example, willsuggest search terms as you type. This allows the user to avoid typingin an entire search term or phrase, and instead select the search termor phrase. An issue with these systems, however, is that these suggestedterms are not suggested based on the relevance to the user typing. Assuch, terms suggested may be of little relevance to the user typing,and, as such, the user is given irrelevant information and, possibly,not presented with the words or phrases that are intended.

The techniques described herein address these issues.

The approaches described in this section are approaches that could bepursued, but are not necessarily approaches that have been previouslyconceived or pursued. Therefore, unless otherwise indicated, it shouldnot be assumed that any of the approaches described in this sectionqualify as prior art merely by virtue of their inclusion in thissection.

SUMMARY

The attached claims serve as a summary of the invention.

BRIEF DESCRIPTION OF THE DRAWINGS

In the drawings:

FIG. 1 depicts an example process for improved automatic suggestionsbased on group relevance.

FIG. 2 depicts an example system for improved automatic suggestionsbased on group relevance.

FIG. 3 depicts example hardware for improved automatic suggestions basedon group relevance.

FIG. 4 and FIG. 5 depict example user interfaces for improved automaticsuggestions based on group relevance.

DETAILED DESCRIPTION

In the following description, for the purposes of explanation, numerousspecific details are set forth in order to provide a thoroughunderstanding of the present invention. It will be apparent, however,that the present invention may be practiced without these specificdetails. In other instances, well-known structures and devices are shownin block diagram form in order to avoid unnecessarily obscuring thepresent invention.

General Overview

As discussed above, one of the most useful features of computing systemsis automatically suggesting content as a user types. For example, if auser types in “B”, the computer system may suggest “Bloomingdale's”,“Basketball”, and “Bumblebee”. If the user is attempting to type one ofthe suggested words, this can really improve efficiency in typing. Theuser can interactively accept automatically suggested words or othertokens (e.g., using a mouse and/or the Tab key). An issue with suchautosuggest systems is, however, that the suggestions are not directedto what may be useful to the user. Therefore, the user may be typing thebeginning of a word, such as “Cro” and get back “CrossFit”, “Crocs” and“Crossword” when the user was intending to type in the name of a projectthat she is working on “Cronos”. The computer system making thesesuggestions may be making them based on, for example, what other usersacross the system might have typed in. The average relevance across anentire ecosystem of users may not, however, be a good measure of what tosuggest to a particular user.

In some embodiments, techniques herein determine and suggest tokens thatare relevant to groups with which the user is associated in order betterpredict what the user may be typing. Various embodiments of determiningthe groups is discussed more below.

Generally, the techniques include receiving a partial input as a usertypes in a word (e.g., in a search or other text box), determiningrelevant groups for the particular account node associated with theinput (e.g., an account node may be a representation of a user account),and determining tokens to show on the display as the user types, basedat least in part on tokens that are relevant to other accounts in theaccount node groups with which the particular user account isassociated.

In some embodiments, techniques herein use the actions taken by multipleuser accounts on digital content in order to determine groupings ofthose accounts. In the discussion herein, accounts are discussed asrepresented by “white” nodes, content on which accounts take action are“black” nodes, and the edges between the white nodes and black nodes arethe actions taken by the white nodes on the black nodes (e.g., anaccount (white node) may edit (edge connector) a document (black node).The actions taken by white nodes on black nodes can be partitioned usinga technique such as the Louvain Modularity or other partitioningtechnique. Node groups can be created based on a partitioning. Thedigital content maybe, for example, digital content associated withfederated programs running on computing systems and being used by anumber of accounts, such as accounts related to work. The account nodegroups that are determined based on the partitioning may later be usedto improve the relevance of suggested tokens, by looking at what theother accounts in associated groups of accounts have interacted with inthe system. Numerous embodiments are described herein and provide manybenefits, including the benefit of providing improved suggestions whenthe account is associated with a group of other accounts.

In some embodiments, when an individual account begins to type a word orphrase, the autosuggest system using the techniques herein will receivepartial input. From there, it will use the previously determined accountnode groups to determine one or more corresponding account node groupswhich are related to the particular account (the one from which partialinput has been received). Based on these particular account node groups,the autosuggest system will use the account node groups to determinedigital tokens that have been typed in, or edited by, accessed by, etcetera, other accounts in those account node groups. These may have beenpreviously ranked by the group relevance system. The tokens for theaccount node groups will then be searched by the autosuggest systembased on the partial input. In this way the tokes for the account nodegroup(s)'s accounts will be increased in weighting relevance in theautosuggest results. Increasing the relevance in the autosuggest resultsof the tokens should improve the relevance of the autosuggest resultsfor the particular account that is associated with the partial input.These autosuggest results are then provided for display. Optionally, insome embodiments, a selection of an automatically suggested result maybe received, and the use of the selected token may be caused (e.g., theselected “Cronos” may be input into the field).

Consider an example where Alicia, Bob and Carole all work together on aproject. The three of them may not be in the same organization withinthe org chart of the company. Bob and Carole may have each searched foror typed in “Cronos” often, as well as used conference room “17-4 ScrollSaw” often. So, when Alicia begins typing in the term “Cro . . . ”, theautosuggest system may determine that Alicia is in a group with Bob andCarole (from account node groups made based on the account nodepartitioning or made in some other way). From there, it can determinesuggestions for the “Cro” partial input, such as “Cronos” and “17-4Scroll Saw”. As may be clear from the example, when typing in a partialword that could have many possible completions, Alicia may otherwise (ifnot for the techniques herein) may not have been given the appropriatetokens “Cronos” or”, “17-4 Scroll Saw” at all, and even if she were, itmight be buried in a long list of suggestions. Further to this example,Alicia might be part of other groups, each of those may or may not havea token containing “Cro” that is relevant to others in those group. Ifthere are other groups that have relevant tokens containing “cro” thenthose documents may also be served in Alicia's suggestions. In this way,Alicia is served the most relevant suggestions containing the letters“cro”.

In addition to working with the partitioned groups discussed herein, thetechniques also work with groupings such as location of users associatedwith account nodes, organization of account nodes based on corporateorganizational structures, and the like.

Example Processes for Improved Automatic Suggestions Based on GroupRelevance

FIG. 1 depicts an example process 100 for improved automatic suggestionsbased on group relevance. Process 100 optionally commences bypartitioning 110 account nodes based on actions taken by those nodes(e.g. representing user accounts on a federated system) on content nodes(e.g., representing documents, chat rooms, etc.). Partitioning 110 thoseaccount nodes can include the use of any appropriate partitionalgorithm, including those discussed herein. The group relevance systemwill determine 120 two or more account node groups. If partitioning 110was performed, then the groups will be determined based on thepartitioning 110. Otherwise, the groups may be determined 120 based onother factors, such as grouping based on organizational structure,project team lists, location, etc. Generally, during partitioning,accounts associated with nodes in each of the two or more groups willhave interacted with similar digital content. The interactions maybesearching on a particular term, clicking on a document in searchresults, lingering on a document for a period of time, going into aparticular chat room, contributing in a chat room, responding to amessage in a chat room, editing a document, commenting on a document,responding to a comment on a document, and the like.

Process 100 proceeds by the group relevance system ranking 125 one ormore tokens associated with the groups. The term token, as used herein,is a broad term encompassing its plain and ordinary meaning, includingone or more words or phrases, and can include words in any language, andnames, email address, room names, etc. For example, the terms searchedfor previously by members of the groups may be broken up word-by-wordinto tokens and/or broken up into phrases; room names added to calendarinvites may be used as tokens; etc. The terms can be ranked using anyappropriate method, including frequency of use, a weighted calculationbased on the type of token and/or use (e.g., names associated withaccounts and email addresses added to emails or calendar invites may begiven more weight).

In some embodiments, not depicted in FIG. 1, the autosuggest systemranks 125 the tokens for the groups after the groups have been sent tothe autosuggest system.

As noted by the dotted line between ranking 125 and partitioning 110,the node groups may be updated, and tokens ranked periodically (e.g.,every 10 minutes, 10 hours, day, week, etc.), and partitioning 110 anddetermining 120 may therefore be repeated in each cycle.

The determined 120 account node groups and rankings may be sent to theautosuggest system. The autosuggest system receives 130 a partial inputfrom an account associated with an account node. The autosuggest systemwill determine 140 one or more corresponding account node groups for theaccount from which the partial input was received 130. The suggestionsare then determined 150 by the autosuggest system based at least in parton the ranked tokens and the partial input. After determining 150 thesuggestions for the partial input, display 160 of the suggestions iscaused. In some embodiments, the suggestions are provided in a mannersuch as those depicted in user interfaces 400 and/or 500.

In some embodiments, process 100 also includes receiving 170 a selection(e.g., on a user interface such one or user interfaces 400 or 500) fromamong the suggestions. Such a selection may be followed by the tokenbeing used. For example, if process 100 has as input the partial input“cro”, and suggests “Cronos”, “17-4 Scroll Saw” and “Project Cronos” asthe suggested tokens, and the user interface is used to select “ProjectCronos” as the token, then this token may be used in the input mechanismon the interface. Examples such as this are discussed more below.

Returning to the top of process 100, actions taken by account nodes oncontent are optionally partitioned 110. Partitioning 110 can beperformed using any appropriate method including Louvain Modularity orthe Louvain Method for Community Detection. Using the Louvain Method,small communities are found by optimizing modularity locally on all thenodes. Then each small community is grouped into one node and the firststep is repeated. Another approach is that of Clauset, Newman, and Mooreand more that finds community structure in very large networks. Further,K-means clustering may be used, which will partition the data space intoVoronoi cells, which can be used to determine groups.

If the account nodes have been partitioned 110, the account node groupsare determined 120 based on the partitioning 110. The account nodegroups can be of any size. For example, a group may have just twoaccount nodes therein, or may have tens or hundreds of account nodes. Aparticular account can be associated with multiple account node groups,or a single account node group. For example, a particular user namedAlicia is working on Project Cronos and two other projects. For her workon Project Cronos, she also works with Bob and Carole. Alicia, Bob, andCarole all work on particular documents and in particular chat rooms forProject Cronos. Based on the interactions that all three of them havemade related to Project Cronos with particular digital content, theywill be partitioned together, and an account node group will be formedbased on those three. This happens regardless of whether Alicia, Bob,and Carole are all in the same corporate organization, location, etc.Similar assessment will be made, and groups formed for the otherprojects on which Alicia works.

In some embodiments, as discussed elsewhere, the actions taken byaccounts on content can be termed “white nodes” (the account nodes)acting on “black nodes” (the digital content). Generally, there will befar more black nodes than white nodes. The actions taken are the “edges”between the white nodes and the black nodes. For example, if Bobsearches for the word “overview,” the white node is Bob, the edge is“searches for” and the black node is the word “overview.” When Bob getsback search results and clicks on the Overview document for ProjectCronos, the white node is Bob, the edge is “clicks on” and the blacknode is the Project Cronos Overview Document. Bob may then edit thedocument, and the white node is Bob, the edge is the act of editing, andthe black node is the Project Cronos Overview Document. Alicia andCarole may make similar actions to Bob's on the Project Cronos OverviewDocument. They will have corresponding white nodes and black nodes andedges. Taken together, all of these white node edge black nodecombinations are used to partition 110 the actions taken by accounts oncontent. Based on the similarity and overlap of these interactions, thedetermination 120 can be made to place Alicia, Bob and Carol in the samegroup.

In some embodiments, the account node groups are determined 120 based onadditional or different factors. For example, in some embodiments, theaccount nodes are determined 120 based on one or more of organizationalstructure, location, manager, etc. The account node groups would then bebased on those factors. For example, an account node group may be formedbased on accounts of people who report to the same manager and/or are inthe same location. In some embodiments, no partitioning is done, and theaccount node groups are formed based on an input, such as based on oneor more lists of user accounts (e.g., listing project teams)corresponding to account nodes.

The group relevance system ranks 125 tokens for the determined groups ofnodes. As discussed elsewhere herein, tokens can take many forms,including words or phrases used in documents, words or phrases used incalendar invites, words or phrases used in chats or other messagingprograms, user account names and email addresses, etc. Returning to theconceptualization of account nodes being white nodes and content itemsbeing black nodes, tokens can be extracted or determined for black nodes(content items). For example, a black node that is an email may have atoken associated with it for the “to:” field of the email, for the“from:” field of the email, and for the “cc:” field of the email,further, as discussed more below, the tokens can include metadataindicating what part of the email the token came from. Tokens may alsobe created for the subject line, with one or more tokens representingphrases in the subject line and/or words in the subject line. Similarly,the body of the email may be broken up into tokens (e.g., word by word,and/or with phrases).

Calendar invites can also be associated with numerous tokens. The titleand message body of the calendar invite may be tokenized in a waysimilar to an email address or a document. The location of the meetingmay also be tokenized. For example, the name of the conference room inwhich the meeting is taking place may be its own token. Any buildingnames may also be their own tokens. Similarly, if a street address orother location is used it may also be broken up into tokens (e.g., witheach of street address, city, state, zip each being tokenized into oneor more tokens).

As alluded to, documents (e.g., word processor or text documents) canalso be broken up into tokens. The file name of the document may bebroken up into one or more tokens. The body of the document may also betokenized. Any headers may have their own separate tokens along withmetadata in the token that indicates that it is a header. The body ofthe document may also be tokenized.

In addition to the metadata discussed above, in some embodiments, tokensmay have frequency information attached. That is, it may have metadataindicating the number of times that token appeared in the content item(or section of the content item). For example, if the word Cronosappears 65 times in the body of an email, the token may indicate boththe word Cronos and that it appeared 65 times in the email body.

In some embodiments, as discussed above, tokens may have variousmetadata attached. For example, as noted above, the frequency of a tokenin a particular content item may be indicated in metadata in the token.The type of data that is in the token, or the area from which the tokenwas taken may also be indicated in the metadata. For example, an emailaddress may have metadata indicating that it is an email address, aswell as whether it was in the “to:”, “cc:”, or “from:” fields. Timinginformation may also be included in tokens. For example, if an emailaddress was sent on Mar. 10, 2018, then tokens associated with thatemail may have an indication of that date. The area from which the tokenwas taken may also be indicated in metadata in the token. For example,tokens taken from the document title may have an identifier indicatingthat the token was taken from the document title. Similarly, tokenstaken from file names may have an indication that the token is relatedto a file name. Tokens taken from the message body may have anindication indicating that the token is related to the message body.

In some embodiments, relevance of each token is determined for eachaccount node, and the relevance for each groups of nodes may bedetermined based on the combination of the relevance of the tokens tothe account nodes in the group. For example, returning to theconceptualization of the white nodes and black nodes, for a particulartoken related to black nodes (content items), the more often it isinteracted with by a particular white node (account), the higher rankedthe token should be for the partial input. If a different white node(account) that is in the same account node group also interacted withthe same particular token, then that interaction would also increase therank of the token for the partial input. Stated another way, theautosuggest system may rank tokens at least in part on the frequency ofinteraction of white nodes with black nodes containing or related to thetokens and/or the frequency of occurrence of those tokens in the contentitems for the black nodes. For example, if Bob and Carole are in a nodegroup with Alicia, and if Bob has edited numerous documents with thetoken “Cronos” in the document text and/or title, used the term “Cronos”in the subject of emails and/or calendar invites, etc., then the token“Cronos” may be highly ranked for the account node related to Bob.Similarly, if Carole has viewed, edited, etc. documents with frequentoccurrence of “Cronos”, the token “Cronos” would be ranked yet higherbased on the combination of the rankings of Bob and Carole.

Ranking tokens may be done in any appropriate manner. For example,tokens that represent common words or phrases may be excluded from theranking completely. This may happen even if they occur frequently in theassociated black nodes. For example, common words such as “the,” “a,”“you,” etc. may be excluded from ranking. In some embodiments, the grouprelevance system may look at tokens that are common across many whitenodes, or account nodes, and exclude those that occur frequently in mostor all of the white nodes. For example, if users in a large federatedsystem often use words such as “the,” “a,” “you,” etc. then those may beexcluded from the ranked tokens. In some embodiments, however, frequentoccurrence of phrases across accounts in a federated system may indicatethat the word or phrase should be included in the suggested tokens. Forexample, if many white nodes have used black nodes that contain thetoken “Atlassian,” that may be an indication that future input may alsobe the word “Atlassian.” As such, in some embodiments, those tokens maybe a valid and useful automatic suggestion based on partial input andwill not be excluded from the ranked tokens.

In some embodiments, a supervised machine learning method is used todetermine the weighting of various factors on the relevance of tokens.For example, the metadata discussed above is attached to or included ineach token may be used to train a supervised machine learning model. Thetraining data for the supervised machine learning model will be tokenswith the metadata and correct and/or incorrect token suggestions forparticular partial input. Using this training data, a supervised machinelearning model is trained to determine correct weightings to use forvarious metadata (fields and/or values) in suggesting a token. Thissupervised machine learning model can be used to determine, ranking 125for tokens for account nodes (or groups of account nodes). The rankingcan then be used by the autosuggest system to determine tokens tosuggest based on partial input. In some embodiments, any appropriatetype of supervised neural network or other machine learning method canbe used for determining rankings such as a feedforward neural network, aradial basis function neural network, a Kohonen self-organizing neuralnetwork, a recurrent neural network, a convolutional neural network, amodular neural network, and/or the like. In some embodiments, a neuralnetwork is trained for all account nodes, but in other embodiments, aneural network could be trained separately for groups of account nodesand/or individual account nodes.

As noted above, in some embodiments, the rankings of tokens areperformed for each account separately. The ranked tokens for eachaccount node may then be combined to produce suggested items as a singlelist ranked based on the rankings for each account node. In someembodiments, when a token is suggested for more than one account node,the scores for each account node may be combined in any appropriatemanner, such as using addition or averaging the two ranking scores. Thislist will then be used by the autosuggest system in order to determine150 the tokens for account node groups, as discussed more below.

The autosuggest system receives 130 partial input for a particularaccount, associated with a particular account node. It will thendetermine 140 one or more corresponding account node groups for theparticular account. Determining the one or more corresponding accountsnode groups may comprise accessing the two or more account node groupsthat were determined 120 by the group relevance system. The account maybe associated with only one account node group, or it may be associatedwith more than one account node group.

Process 100 proceeds with the autosuggest system determining 150suggestions based at least in part on the ranking 125 of tokens for thedetermined 120 account node group(s). As discussed elsewhere herein,determining 150 the suggestions of tokens may be based at least in parton the ranking 125 of the tokens. The ranked 125 tokens may be searchedin order to find tokens that match the partial input. For example, ifthe partial input is “cro”, and the ranked tokens include “Cronos”,“17-4 Scroll Saw” and “Project Cronos”, then those tokens may beselected as the suggestions. In some embodiments, the partial input canbe used to match any sequence of letters in the token (such as matching“cro” with “Cronos”, “17-4 Scroll Saw” and “Project Cronos”). In someembodiments, the partial input may be matched only with tokens thatbegin with the same letters (e.g., just “Cronos”, and not “17-4 ScrollSaw” and “Project Cronos”).

In some embodiments, the tokens may be matched only with tokens ofcertain types. For example, as noted above, tokens may include metadata,and that metadata may include where the token was taken from and/or whattype of data is included in the data. For example, “17-4 Scroll Saw” mayhave metadata indicating it is a location and a conference room. Inthese embodiments, the partial input received 130 may also include anindication of the type of input, and the type of input may be used tofilter or weight the tokens. Returning to the same example, if thepartial input is “cro” and the data type of the input is location orconference room (e.g., on a calendar invitation), then the tokensdetermined 150 to match the partial input may be limited to “17-4 ScrollSaw” in some embodiments because the token matches the data type of theinput, or the token “17-4 Scroll Saw” may be ranked higher than “Cronos”and “Project Cronos” because “17-4 Scroll Saw” matches the data type ofthe input being suggested.

After the suggestions have been determined 150, the autosuggest systemcauses display 160 of the list of suggestions. Causing display 160 ofthe list of suggestions can include any appropriate mechanism, includingsending the list of suggestions to a user device on which the partialinput was typed. For example, is Alicia types “cro” into a text box fora location of a meeting on her user device, then causing display 160 ofthe suggestions may include providing to the user device the list ofsuggestions, and the user device displaying the list of suggestions onthe user device (see, e.g., FIG. 4 and FIG. 5).

In some embodiments, process 100 optionally includes receiving 170 aselection of a token in the list of suggestions and causing use of theselected token. For example, if Alicia types “cro” into the text box fora location of a meeting, and the autosuggest system sends the list ofsuggestions, which include “17-4 Scroll Saw”, then Alicia may selectthat token, and the token may then appear as if she had typed the entiretoken into the text box for location in the calendar invitation.Further, not depicted in FIG. 1, the selection of the token may be usedto feed back into the supervised machine learning model (discussedelsewhere herein) in order to improve the supervised machine learningmodel. For example, in the example above, if Alicia dose not choose“17-4 Scroll Saw”, but instead chooses (or types in) another token,“17-5 Cronos War Room”, then that choice may be used along with otherdata to improve the supervised machine learning model used to rank 125the tokens. In some embodiments, tokens are selectable using a mouse tonavigate to the token, and selection may be indicated by the clicking ofthe mouse button. In some embodiments, selection is indicated by usingarrow keys (to navigate among tokens) and/or a return key (to select atoken) on a keyboard.

As discussed herein, various of the portions of process 100 may beexecuted on the group relevance system and/or the autosuggest system.The distribution of execution on each system is used merely one set ofembodiments. Other sets of embodiments, even if performing the same orsimilar functions, may have a different distribution work among systems.For example, not depicted in FIG. 1, some or all what occurs on theautosuggest system may occur on a user device. For example, in someembodiments, the groupings, rankings, and trained supervised machinelearning model are all sent to a user device, and the determination ofgroups and suggestion of tokens may occur locally at the user device. Inyet other embodiments, the autosuggest system runs as part of the userdevice.

Example User Interfaces and Underlying Technology for Improved AutomaticSuggestions Based on Group Relevance

FIG. 4 depicts a user interface 400 for improved automatic suggestionsbased on group relevance. User interface 400 includes a text input box410. Text input box 410 may be any appropriate input mechanism,including a rendered markup language box in which a user associated witha user account can type in a search term. In some embodiments, userinterface 400 also includes suggestions of tokens provided by process100. The suggestions may include tokens (or text from tokens) 420, 421.In some embodiments, not depicted in FIG. 4, the user interface may alsoinclude explanations that summarize why these particular suggestions arebeing displayed. Explanations may, for example, explain that people youwork with have viewed, edited, the document, have joined the listed chatroom, etc. that is associated with the token. In some embodiments, ifyou hover over a suggested token, it will show the explanationsand/information on what accounts related to yours interacted with thedocument, or provide other information related to why the particularsearch result is being displayed.

FIG. 5 depicts a user interface 500 for improved automatic suggestionsbased on group relevance. User interface 500 includes a text input box510. Text input box 510 may be similar to text input box 410 from userinterface 400. As depicted in user interface 500, text input box 510 maybe a location box (in this case for a calendar invitation). When a usertypes in a partial input of a location in input box 510, the suggestionsdetermined by process 100 may be limited to tokens that have metadataindicating that they are locations, and displayed as suggestions 520,521.

System for Improved Automatic Suggestions Based on Group Relevance

FIG. 2 depicts an example system 200 for improved automatic suggestionsbased on group relevance. An autosuggest system 230, group relevancesystem 210, user devices 220, 221, 222 may all be coupled to a network290 and be able to communicate via the network 290. Storage devices 240and 241 are depicted as being coupled to the network 290, but they mayalso be coupled directly to group relevance system 210 and/orautosuggest system 230, respectively. Each storage device 240, 241 couldalso be coupled to network 290 or may be part of group relevance system210 or autosuggest system 230. Each of the devices 220, 221, 222,autosuggest system 230, and group relevance system 210 may run as partof the same process and/or on the same hardware (not depicted in FIG. 2)or may run separately. Further, each may run on a single processor orcomputing device or on multiple computing devices, such as thosediscussed with respect to FIG. 3 and elsewhere herein.

As discussed elsewhere herein, the group relevance system 210 may be incommunication with autosuggest system 230 and devices 220, 221, 222 inorder to perform its portion of process 100. The group relevance system210 may store the intermediary results and/or indications of groups ofnodes in storage 241, or it may store these things in another location,such as in the autosuggest system 230 or storage 240. Autosuggest system230 may store its search results in storage 240 or elsewhere.Suggestions determined using process 100 may be sent via network 290 touser devices 220, 221, 222. The device 220, 221, 222 may be used todisplay the user interfaces 400, 500 and may allow for the interactionsfrom the user accounts discussed herein.

Group relevance system 210, and/or autosuggest system 230 or otherservers (not pictured here) may run federated applications with whichcontent items may relate. Federated application may include, but are notlimited to, one or more of electronic mail servers or applications, chatservers or applications, other help ticket systems, video conferencingsystems, resource control systems (e.g., a conference room bookingsystem), blogging services, software code repositories, video contentservices (e.g., to show stored videos), and the like.

As discussed herein the process 100 may run in single or multipleinstances, and run in parallel, in conjunction, together, or one process100 may be a subprocess of another process 100. Further, any of theprocesses discussed herein, including process 100 may run on the systemsor hardware discussed herein, including those depicted in FIG. 2 andFIG. 3.

Hardware Overview

According to some embodiments, the techniques described herein areimplemented by one or more special-purpose computing devices. Thespecial-purpose computing devices may be hard-wired to perform thetechniques, or may include digital electronic devices such as one ormore application-specific integrated circuits (ASICs) or fieldprogrammable gate arrays (FPGAs) that are persistently programmed toperform the techniques, or may include one or more general purposehardware processors programmed to perform the techniques pursuant toprogram instructions in firmware, memory, other storage, or acombination. Such special-purpose computing devices may also combinecustom hard-wired logic, ASICs, or FPGAs with custom programming toaccomplish the techniques. The special-purpose computing devices may bedesktop computer systems, portable computer systems, handheld devices,networking devices or any other device that incorporates hard-wiredand/or program logic to implement the techniques.

For example, FIG. 3 is a block diagram that illustrates a computersystem 300 upon which an embodiment of the invention may be implemented.Computer system 300 includes a bus 302 or other communication mechanismfor communicating information, and a hardware processor 304 coupled withbus 302 for processing information. Hardware processor 304 may be, forexample, a general purpose microprocessor.

Computer system 300 also includes a main memory 306, such as a randomaccess memory (RAM) or other dynamic storage device, coupled to bus 302for storing information and instructions to be executed by processor304. Main memory 306 also may be used for storing temporary variables orother intermediate information during execution of instructions to beexecuted by processor 304. Such instructions, when stored innon-transitory storage media accessible to processor 304, rendercomputer system 300 into a special-purpose machine that is customized toperform the operations specified in the instructions.

Computer system 300 further includes a read only memory (ROM) 308 orother static storage device coupled to bus 302 for storing staticinformation and instructions for processor 304. A storage device 310,such as a magnetic disk, optical disk, or solid-state drive is providedand coupled to bus 302 for storing information and instructions.

Computer system 300 may be coupled via bus 302 to a display 312, such asan OLED, LED or cathode ray tube (CRT), for displaying information to acomputer user. An input device 314, including alphanumeric and otherkeys, is coupled to bus 302 for communicating information and commandselections to processor 304. Another type of user input device is cursorcontrol 316, such as a mouse, a trackball, or cursor direction keys forcommunicating direction information and command selections to processor304 and for controlling cursor movement on display 312. This inputdevice typically has two degrees of freedom in two axes, a first axis(e.g., x) and a second axis (e.g., y), that allows the device to specifypositions in a plane. The input device 314 may also have multiple inputmodalities, such as multiple 2-axes controllers, and/or input buttons orkeyboard. This allows a user to input along more than two dimensionssimultaneously and/or control the input of more than one type of action.

Computer system 300 may implement the techniques described herein usingcustomized hard-wired logic, one or more ASICs or FPGAs, firmware and/orprogram logic which in combination with the computer system causes orprograms computer system 300 to be a special-purpose machine. Accordingto some embodiments, the techniques herein are performed by computersystem 300 in response to processor 304 executing one or more sequencesof one or more instructions contained in main memory 306. Suchinstructions may be read into main memory 306 from another storagemedium, such as storage device 310. Execution of the sequences ofinstructions contained in main memory 306 causes processor 304 toperform the process steps described herein. In alternative embodiments,hard-wired circuitry may be used in place of or in combination withsoftware instructions.

The term “storage media” as used herein refers to any non-transitorymedia that store data and/or instructions that cause a machine tooperate in a specific fashion. Such storage media may comprisenon-volatile media and/or volatile media. Non-volatile media includes,for example, optical disks, magnetic disks, or solid-state drives, suchas storage device 310. Volatile media includes dynamic memory, such asmain memory 306. Common forms of storage media include, for example, afloppy disk, a flexible disk, hard disk, solid-state drive, magnetictape, or any other magnetic data storage medium, a CD-ROM, any otheroptical data storage medium, any physical medium with patterns of holes,a RAM, a PROM, and EPROM, a FLASH-EPROM, NVRAM, any other memory chip orcartridge.

Storage media is distinct from but may be used in conjunction withtransmission media. Transmission media participates in transferringinformation between storage media. For example, transmission mediaincludes coaxial cables, copper wire and fiber optics, including thewires that comprise bus 302. Transmission media can also take the formof acoustic or light waves, such as those generated during radio-waveand infra-red data communications.

Various forms of media may be involved in carrying one or more sequencesof one or more instructions to processor 304 for execution. For example,the instructions may initially be carried on a magnetic disk orsolid-state drive of a remote computer. The remote computer can load theinstructions into its dynamic memory and send the instructions over atelephone line using a modem. A modem local to computer system 300 canreceive the data on the telephone line and use an infra-red transmitterto convert the data to an infra-red signal. An infra-red detector canreceive the data carried in the infra-red signal and appropriatecircuitry can place the data on bus 302. Bus 302 carries the data tomain memory 306, from which processor 304 retrieves and executes theinstructions. The instructions received by main memory 306 mayoptionally be stored on storage device 310 either before or afterexecution by processor 304.

Computer system 300 also includes a communication interface 318 coupledto bus 302. Communication interface 318 provides a two-way datacommunication coupling to a network link 320 that is connected to alocal network 322. For example, communication interface 318 may be anintegrated services digital network (ISDN) card, cable modem, satellitemodem, or a modem to provide a data communication connection to acorresponding type of telephone line. As another example, communicationinterface 318 may be a local area network (LAN) card to provide a datacommunication connection to a compatible LAN. Wireless links may also beimplemented. In any such implementation, communication interface 318sends and receives electrical, electromagnetic or optical signals thatcarry digital data streams representing various types of information.Such a wireless link could be a Bluetooth, Bluetooth Low Energy (BLE),802.11 WiFi connection, or the like.

Network link 320 typically provides data communication through one ormore networks to other data devices. For example, network link 320 mayprovide a connection through local network 322 to a host computer 324 orto data equipment operated by an Internet Service Provider (ISP) 326.ISP 326 in turn provides data communication services through the worldwide packet data communication network now commonly referred to as the“Internet” 328. Local network 322 and Internet 328 both use electrical,electromagnetic or optical signals that carry digital data streams. Thesignals through the various networks and the signals on network link 320and through communication interface 318, which carry the digital data toand from computer system 300, are example forms of transmission media.

Computer system 300 can send messages and receive data, includingprogram code, through the network(s), network link 320 and communicationinterface 318. In the Internet example, a server 330 might transmit arequested code for an application program through Internet 328, ISP 326,local network 322 and communication interface 318.

The received code may be executed by processor 304 as it is received,and/or stored in storage device 310, or other non-volatile storage forlater execution.

In the foregoing specification, embodiments of the invention have beendescribed with reference to numerous specific details that may vary fromimplementation to implementation. The specification and drawings are,accordingly, to be regarded in an illustrative rather than a restrictivesense. The sole and exclusive indicator of the scope of the invention,and what is intended by the applicants to be the scope of the invention,is the literal and equivalent scope of the set of claims that issue fromthis application, in the specific form in which such claims issue,including any subsequent correction.

What is claimed is:
 1. A system comprising: one or more computingdevices; a group relevance system, executing using the one or morecomputing devices, the one or more computing devices being configured toexecute group relevance system instructions, which, when execute causethe group relevance system to perform a first process of: partitioning aplurality of account nodes into two or more account node groups based onactions taken on same content items from a plurality of content itemsassociated with a plurality of content nodes such that each of the twoor more account node groups includes accounts associated with accountnodes that have taken actions on a same particular content item from theplurality of content items associated with the plurality of contentnodes; in response to the partitioning, extracting tokens frominformation contained within a subset of the plurality of content itemswith which various account nodes in the two or more account node groupshave interacted; establishing a ranking of the extracted tokens; anautosuggest system, executing using the one or more computing devices,the one or more computing devices being configured to executeautosuggest system instructions, which, when execute cause theautosuggest system to perform a second process of: receiving partialinput associated with a particular user account, wherein the particularuser account has a corresponding particular user account node in theplurality of account nodes; determining one or more suggested tokensbased at least in part on the partial input and the ranked tokens for atleast one corresponding account node group associated with theparticular user account node.
 2. The system of claim 1, wherein thefirst process further comprises ranking the extracted tokens based atleast in part on prevalence of the tokens in the subset of the pluralityof content items.
 3. The system of claim 1, wherein the first processfurther comprises ranking a token of the extracted tokens higher if thetoken appears in content items associated with more than one accountnode.
 4. The system of claim 1, wherein the first process furthercomprises ranking a token of the extracted tokens lower based at leastin part on prevalence of the token in other sets of content items notassociated with the at least one corresponding account node group. 5.The system of claim 1, wherein the first process further comprisesranking a token of the extracted tokens based at least in part on aratio of prevalence of the token in the subset of the plurality ofcontent items and prevalence of the token in other sets of content itemsnot associated with the at least one corresponding account node group.6. The system of claim 1, wherein the second process further comprises:causing display of the one or more suggested tokens in selectable form;receiving a selection of the selectable form of a token of the one ormore suggested tokens; causing use of the selected token in a particularuser interface, wherein causing use of the selected token in theparticular user interface comprises displaying text associated with theselected token in the particular user interface.
 7. The system of claim6, wherein causing display of the one or more suggested tokens inselectable form comprises causing display of the one or more suggestedtokens in a selectable list.
 8. The system of claim 1, whereindetermining the two or more account node groups comprises: partitioningthe plurality of account nodes based on actions taken on the pluralityof content items associated with the plurality of content nodes byaccounts associated with the plurality of account nodes; determining thetwo or more account node groups based at least in part on thepartitioning of the plurality of account nodes.
 9. The system of claim8, wherein partitioning the plurality of account nodes comprisespartitioning the plurality of account nodes using Louvain Modularity.10. The system of claim 1, wherein at least one of the subset of theplurality of content items is associated with a federated program beingused by the accounts associated with at least one of the two or moreaccount node groups.
 11. A method comprising: partitioning, using agroup relevance system, a plurality of account nodes into two or moreaccount node groups based on actions taken on same content items from aplurality of content items associated with a plurality of content nodessuch that each of the two or more account node groups includes accountsassociated with account nodes that have taken actions on a sameparticular content item from the plurality of content items associatedwith the plurality of content nodes; in response to the partitioning,extracting, using the group relevance system, tokens from informationcontained within a subset of the plurality of content items with whichvarious account nodes in the two or more account node groups haveinteracted; establishing, using the group relevance system, a ranking ofthe extracted tokens; receiving, an autosuggest system, partial inputassociated with a particular user account, wherein the particular useraccount has a corresponding particular user account node in theplurality of account nodes; determining, an autosuggest system, one ormore suggested tokens based at least in part on the partial input andthe ranked tokens for at least one corresponding account node groupassociated with the particular user account node.
 12. The method ofclaim 11, further comprising, using the group relevance system, rankingthe extracted tokens based at least in part on prevalence of the tokensin the subset of the plurality of content items.
 13. The method of claim11, further comprising, using the group relevance system, ranking atoken of the extracted tokens higher if the token appears in contentitems associated with more than one account node.
 14. The method ofclaim 11, further comprising, using the group relevance system, rankinga token of the extracted tokens lower based at least in part onprevalence of the token in other sets of content items not associatedwith the at least one corresponding account node group.
 15. The methodof claim 11, further comprising, using the group relevance system,ranking a token of the extracted tokens based at least in part on aratio of prevalence of the token in the subset of the plurality ofcontent items and prevalence of the token in other sets of content itemsnot associated with the at least one corresponding account node group.16. The method of claim 11, further comprising: lcausing, using theautosuggest system, display of the one or more suggested tokens inselectable form; receiving, using the autosuggest system, a selection ofthe selectable form of a token of the one or more suggested tokens;causing, using the autosuggest system, use of the selected token in aparticular user interface, wherein causing use of the selected token inthe particular user interface comprises displaying text associated withthe selected token in the particular user interface.
 17. The method ofclaim 16, wherein causing display of the one or more suggested tokens inselectable form comprises causing display of the one or more suggestedtokens in a selectable list.
 18. The method of claim 11, whereindetermining the two or more account node groups comprises: partitioningthe plurality of account nodes based on actions taken on the pluralityof content items associated with the plurality of content nodes byaccounts associated with the plurality of account nodes; determining thetwo or more account node groups based at least in part on thepartitioning of the plurality of account nodes.
 19. The method of claim18, wherein partitioning the plurality of account nodes comprisespartitioning the plurality of account nodes using Louvain Modularity.20. The method of claim 11, wherein at least one of the subset of theplurality of content items is associated with a federated program beingused by the accounts associated with at least one of the two or moreaccount node groups.